//
//  程序设计.m
//  Blue-toothLight
//
//  Created by mazg on 15/6/13.
//  Copyright (c) 2015年 mazg. All rights reserved.
//

#import <Foundation/Foundation.h>

/*
 
 程序启动应首先判断用户蓝牙是否开启，如未开启，提醒用户开启蓝牙功能
 
 1、结构设计
    1-1、蓝牙操作模块OperationBlueTooth，所有的蓝牙操作及代理方法基本都在这里，是一个单粒
 
 
 2、数据设计（部分字段入库）
    2-1、设计数据库文件，包含LightModel类，其中属性：（外围设备名、标识符、卧室名、组名） 、是否存在、是否连接、颜色、开关状态 等字段
 
    2-2、定时开启蓝牙搜索（每个10秒），将搜索的外围设备通过LightModel写入到数据库。写入数据库的过程先判断数据库是否包含该蓝牙设备（通过设备名或者标识符进行判断），如果没有则写入，有了则不做任何事情
 
    2-3、灯要显示在列表，得同时满足两个条件1、model存在  2、外围设备数组中灯存在 。显示在列表或者界面上的信息应该是model信息，不是蓝牙搜索到的外围设备数组信息
 
    2-4、如果model存在而蓝牙搜索不到相应的外围设备，对应显示在界面上上的灯应该不可以被操作。
 
    2-5、用户关联每个房间的灯步骤：1、能够关联说明2-3条件成立   2、改变model的卧室名  。如果model的卧室名已经存在，则不应该在关联列表中出现，因为一个灯不应该被关联两次。
 
    2-6、用户关联灯的分组步骤：1、能够关联说明2-3条件成立   2、改变model的组名  。如果model的组名已经存在，则不应该在关联列表中出现，因为一个灯不应该属于两个分组。
 
    2-7、用户删除每个房间灯和组名步骤大致如上。用户给房间和组名重命名步骤大致如上。
 
    2-8、当用户操作具体的灯时，（Present一个TabbarController，给每个TabbarController关联一个model或者一组model），根据model信息找到外围设备数组中对应的设备，给设备发送对应的数据
 
    2-9、外围设备每隔1秒到广播中，同步修改model的信息（－－－－－－待确定）
 
 
 3、颜色操作（不入库）
    设计一个OperationColor类专门负责颜色的操作，包括颜色的调整、渐变、闪烁等等，该类是一个单粒。因为当前在操作的颜色只可能有一个
    属性值包括:1、当前操作的设备或者设备数组
             2、当前颜色
             2、变化的颜色
             3、变化的颜色数组
             4、变化的时间
             5、变化的类型
             6、定时器
             7、是否需要一直变化颜色的bool值
    方法包括: 1、给设备发送更改颜色的方法
             2、定时器更改颜色的方法
 
 
 4、切歌操作（不入库）
    1、播放音乐可以交给对应的viewController来处理
    2、新建一个歌曲model，用来读取系统设备中的歌曲，是一个单粒，里面有歌曲名、歌曲时间、当前播放时间、总共歌曲数组等信息
 
 */




